package cn.stalk.compare.anno;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 主键属性必须存在<br>
 * 包含与排除同时为空时，除主键外所有属性都纳入比较<br>
 * 包含与排除同时存在时，取并集<br>
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AComparables {

    /**
     * 主键属性
     */
    String[] value();

    /**
     * 包含的比较属性
     */
    String[] includes() default {};

    /**
     * 排除的比较属性
     */
    String[] excludes() default {};
}
